Cómo animar

  • Primero instalamos

sudo apt-add-repository ppa:mc3man/trusty-media

sudo apt-get update

sudo apt-get install ffmpeg gstreamer0.10-ffmpeg


In [1]:
using PyPlot
using PyCall
@pyimport matplotlib.animation as anim


INFO: Loading help data...

In [2]:
#Voy a crear una matriz grandota donde la primer entrada es el tiempo, ustede háganlo más eficiente sin usar tanta memoria
Lx=100 #Posiciones en x
Ly=100 #Posiciones en y
N=100 #Tiempos
P=zeros(N,Lx,Ly)
P[1,Lx/2,Ly/2]=1 #Empezamos en la casilla (1,1)

for i in 2:N #Loop tiempo
    for j in 1:Lx #Loop en x
        for k in 1:Ly #Loop en y
            if j==1
                if k==1
                    P[i,j,k]=1/4*(P[i-1,j+1,k]+P[i-1,j,k+1])
                elseif k==Ly
                    P[i,j,k]=1/4*(P[i-1,j,k-1]+P[i-1,j+1,k])
                else
                    P[i,j,k]=1/4*(P[i-1,j,k-1]+P[i-1,j+1,k]+P[i-1,j,k+1])
                end
            elseif j==Lx
                if k==1
                    P[i,j,k]=1/4*(P[i-1,j-1,k]+P[i-1,j,k+1])
                elseif k==Ly
                    P[i,j,k]=1/4*(P[i-1,j,k-1]+P[i-1,j-1,k])
                else
                    P[i,j,k]=1/4*(P[i-1,j,k-1]+P[i-1,j-1,k]+P[i-1,j,k+1])
                end
            else
                if k==1
                    P[i,j,k]=1/4*(P[i-1,j-1,k]+P[i-1,j+1,k]+P[i-1,j,k+1])
                elseif k==Ly
                    P[i,j,k]=1/4*(P[i-1,j-1,k]+P[i-1,j,k-1]+P[i-1,j+1,k])
                else
                    P[i,j,k]=1/4*(P[i-1,j-1,k]+P[i-1,j,k-1]+P[i-1,j+1,k]+P[i-1,j,k+1])
                end
            end
        end
    end
end

In [3]:
#Crear un arreglo de la matriz en cada tiempo
ani=Any[]
for k in 1:100
    push!(ani,squeeze(P[k,:,:],1))
end

In [4]:
fig=figure() #creamos una figura
ims = [[imshow(ani[i])] for i=1:100] #metemos en un arreglo cada colormap en cada tiempo
#Lo que sigue
ani = anim.ArtistAnimation(fig, ims, interval=500, blit=true) 
ani[:save]("caminante2D.mp4", extra_args=["-vcodec", "libx264", "-pix_fmt", "yuv420p"])
display("text/html", string("""<video autoplay controls><source src="data:video/x-m4v;base64,""",base64(open(readbytes,"caminante2D.mp4")),"""" type="video/mp4"></video>"""))